home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / asm / unaligned.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  1KB  |  38 lines

  1. #ifndef __I386_UNALIGNED_H
  2. #define __I386_UNALIGNED_H
  3.  
  4. /*
  5.  * The i386 can do unaligned accesses itself. 
  6.  *
  7.  * The strange macros are there to make sure these can't
  8.  * be misused in a way that makes them not work on other
  9.  * architectures where unaligned accesses aren't as simple.
  10.  */
  11.  
  12. /**
  13.  * get_unaligned - get value from possibly mis-aligned location
  14.  * @ptr: pointer to value
  15.  *
  16.  * This macro should be used for accessing values larger in size than 
  17.  * single bytes at locations that are expected to be improperly aligned, 
  18.  * e.g. retrieving a u16 value from a location not u16-aligned.
  19.  *
  20.  * Note that unaligned accesses can be very expensive on some architectures.
  21.  */
  22. #define get_unaligned(ptr) (*(ptr))
  23.  
  24. /**
  25.  * put_unaligned - put value to a possibly mis-aligned location
  26.  * @val: value to place
  27.  * @ptr: pointer to location
  28.  *
  29.  * This macro should be used for placing values larger in size than 
  30.  * single bytes at locations that are expected to be improperly aligned, 
  31.  * e.g. writing a u16 value to a location not u16-aligned.
  32.  *
  33.  * Note that unaligned accesses can be very expensive on some architectures.
  34.  */
  35. #define put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))
  36.  
  37. #endif
  38.